// Win32DLLDemoUseDLL5.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>

extern int __declspec(dllimport)  gdllvar; // 在任何使用 DLL 的文件中，必须仍在数据的声明上使用 __declspec(dllimport)。

int main()
{
    std::cout << "Hello World!\n";

    // 以模块定义文控方式从DLL中导出全局变量
    // 使用 .DEF 文件从 DLL 中导出变量时，不必在变量上指定 __declspec(dllexport)。 但是，在任何使用 DLL 的文件中，必须仍在数据的声明上使用 __declspec(dllimport)。
    /* 在解决方案中添加一个新项目，用来调用Test.dll。这个新建项目是一个控制台项目，项目名是caller。同时打开caller项目的属性页对话框，
    *    展开左边的“链接器→常规”项，在右边的附加库目录旁输入“$(SolutionDir)$(Configuration)\”（表示解决方案的输出目录）；
    *    https://learn.microsoft.com/zh-cn/cpp/build/reference/common-macros-for-build-commands-and-properties?view=msvc-170
    *    再在左边展开“链接器→输入”，在右边“附加依赖项”旁边输入“Test.lib”，然后单击“确定”按钮。
    */
    printf("%d", gdllvar); // 先输出原来的值
    gdllvar = 66;   // 改为66
    printf("%d", gdllvar); // 再输出新的值

    return 0;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
